<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>String</title>
</head>

<body>
    <p>
        String 是内置的构造函数，用于创建字符串。
    </p>
    <p>
        总结：<br>

        1. 实例属性 length 用来获取字符串的度长(重点)<br>
        2. 实例方法 split('分隔符') 用来将字符串拆分成数组(重点)<br>
        3. 实例方法 substring（需要截取的第一个字符的索引[,结束的索引号]） 用于字符串截取(重点)<br>
        4. 实例方法 startsWith(检测字符串[, 检测位置索引号]) 检测是否以某字符开头(重点)<br>
        5. 实例方法 includes(搜索的字符串[, 检测位置索引号]) 判断一个字符串是否包含在另一个字符串中，根据情况返回 true 或 false(重点)<br>
        6. 实例方法 toUpperCase 用于将字母转换成大写<br>
        7. 实例方法 toLowerCase 用于将就转换成小写<br>
        8. 实例方法 indexOf 检测是否包含某字符<br>
        9. 实例方法 endsWith 检测是否以某字符结尾<br>
        10. 实例方法 replace 用于替换字符串，支持正则匹配<br>
        11. 实例方法 match 用于查找字符串，支持正则匹配<br>

        注：String 也可以当做普通函数使用，这时它的作用是强制转换成字符串数据类型。

    </p>
    <script>
        // 字符串类型
        const str = 'hello world!'
        // 统计字符的长度（字符数量）
        console.log(str.length) // 12
        // 数值类型
        const price = 12.345
        // 保留两位小数
        console.log(price.toFixed(2)); // 12.35


        // 使用构造函数创建字符串
        let str3 = new String('hello world!');
        // 字面量创建字符串
        let str4 = '你好，世界！';
        // 检测是否属于同一个构造函数
        console.log(str3.constructor === str4.constructor); // true
        console.log(str3 instanceof String); // true


        const str5 = "Hello, world!";
        console.log("Length of string:", str5.length); // Length of string: 13


        const str6 = "apple,banana,cherry";
        const fruits2 = str6.split(",");
        console.log(fruits2); // ['apple', 'banana', 'cherry']


        const str7 = "Hello, world!";
        const subStr = str7.substring(0, 5);
        console.log(subStr); // Hello


        const str8 = "Hello, world!";
        console.log(str8.startsWith("Hello")); // true
        console.log(str8.startsWith("world", 7)); // true


        const str9 = "Hello, world!";
        console.log(str9.includes("world")); // true
        console.log(str9.includes("World")); // false 区分大小写


        const str10 = "Hello, world!";
        const upperStr = str10.toUpperCase();
        console.log(upperStr); // HELLO, WORLD!


        const str11 = "Hello, WORLD!";
        const lowerStr = str11.toLowerCase();
        console.log(lowerStr); // hello, world!


        const str12 = "Hello, world!";
        console.log(str12.indexOf("world")); // 7
        console.log(str12.indexOf("World")); // -1


        const str13 = "Hello, world!";
        console.log(str13.endsWith("world!")); // true
        console.log(str13.endsWith("world", 12)); // true


        const str14 = "Hello, world!";
        const newStr = str14.replace("world", "JavaScript");
        console.log(newStr); // Hello, JavaScript!


        const str15 = "The rain in SPAIN stays mainly in the plain";
        const result = str15.match(/ain/g);
        console.log(result); // ['ain', 'ain', 'ain']


        const num = 123;
        const str16 = String(num);
        console.log(typeof str16); // "string"
        console.log(str16); // "123"
    </script>
</body>

</html>